// Secret: 4 3 6 5

CONSTANTS:
NUMBER_OF_COLORS=6

VARIABLES:
GXC1={1 .. NUMBER_OF_COLORS}
GXC2={1 .. NUMBER_OF_COLORS}
GXC3={1 .. NUMBER_OF_COLORS}
GXC4={1 .. NUMBER_OF_COLORS}

LOCAL_VARIABLES:
G1C1=1
G1C2=2
G1C3=3
G1C4=4
G1_Correct_color_and_place=0
G1_Correct_color_and_wrong_place=2

G2C1=3
G2C2=4
G2C3=5
G2C4=6
G2_Correct_color_and_place=0
G2_Correct_color_and_wrong_place=4

G3C1=6
G3C2=3
G3C3=4
G3C4=5
G3_Correct_color_and_place=2
G3_Correct_color_and_wrong_place=2

G4C1=0
G4C2=0
G4C3=0
G4C4=0
G4_Correct_color_and_place=0
G4_Correct_color_and_wrong_place=0

//G4C1=6
//G4C2=5
//G4C3=4
//G4C4=3
//G4_Correct_color_and_place=0
//G4_Correct_color_and_wrong_place=4

G5C1=0
G5C2=0
G5C3=0
G5C4=0
G5_Correct_color_and_place=0
G5_Correct_color_and_wrong_place=0

G6C1=0
G6C2=0
G6C3=0
G6C4=0
G6_Correct_color_and_place=0
G6_Correct_color_and_wrong_place=0

G7C1=0
G7C2=0
G7C3=0
G7C4=0
G7_Correct_color_and_place=0
G7_Correct_color_and_wrong_place=0

G8C1=0
G8C2=0
G8C3=0
G8C4=0
G8_Correct_color_and_place=0
G8_Correct_color_and_wrong_place=0

G9C1=0
G9C2=0
G9C3=0
G9C4=0
G9_Correct_color_and_place=0
G9_Correct_color_and_wrong_place=0

G10C1=0
G10C2=0
G10C3=0
G10C4=0
G10_Correct_color_and_place=0
G10_Correct_color_and_wrong_place=0


RULES:
// Correct color and place must match the new guess
G1_Correct_color_and_place = (G1C1 = GXC1) + (G1C2 = GXC2) + (G1C3 = GXC3) + (G1C4 = GXC4)
G2_Correct_color_and_place = (G2C1 = GXC1) + (G2C2 = GXC2) + (G2C3 = GXC3) + (G2C4 = GXC4)
G3_Correct_color_and_place = (G3C1 = GXC1) + (G3C2 = GXC2) + (G3C3 = GXC3) + (G3C4 = GXC4)
G4_Correct_color_and_place = (G4C1 = GXC1) + (G4C2 = GXC2) + (G4C3 = GXC3) + (G4C4 = GXC4)
G5_Correct_color_and_place = (G5C1 = GXC1) + (G5C2 = GXC2) + (G5C3 = GXC3) + (G5C4 = GXC4)
G6_Correct_color_and_place = (G6C1 = GXC1) + (G6C2 = GXC2) + (G6C3 = GXC3) + (G6C4 = GXC4)
G7_Correct_color_and_place = (G7C1 = GXC1) + (G7C2 = GXC2) + (G7C3 = GXC3) + (G7C4 = GXC4)
G8_Correct_color_and_place = (G8C1 = GXC1) + (G8C2 = GXC2) + (G8C3 = GXC3) + (G8C4 = GXC4)
G9_Correct_color_and_place = (G9C1 = GXC1) + (G9C2 = GXC2) + (G9C3 = GXC3) + (G9C4 = GXC4)
G10_Correct_color_and_place = (G10C1 = GXC1) + (G10C2 = GXC2) + (G10C3 = GXC3) + (G10C4 = GXC4)


// The new guess must not match a wrong guess
G1_Correct_color_and_place != NUMBER_OF_COLORS || G1C1 != GXC1 || G1C2 != GXC2 || G1C3 != GXC3 || G1C4 != GXC4
G2_Correct_color_and_place != NUMBER_OF_COLORS || G2C1 != GXC1 || G2C2 != GXC2 || G2C3 != GXC3 || G2C4 != GXC4
G3_Correct_color_and_place != NUMBER_OF_COLORS || G3C1 != GXC1 || G3C2 != GXC2 || G3C3 != GXC3 || G3C4 != GXC4
G4_Correct_color_and_place != NUMBER_OF_COLORS || G4C1 != GXC1 || G4C2 != GXC2 || G4C3 != GXC3 || G4C4 != GXC4
G5_Correct_color_and_place != NUMBER_OF_COLORS || G5C1 != GXC1 || G5C2 != GXC2 || G5C3 != GXC3 || G5C4 != GXC4
G6_Correct_color_and_place != NUMBER_OF_COLORS || G6C1 != GXC1 || G6C2 != GXC2 || G6C3 != GXC3 || G6C4 != GXC4
G7_Correct_color_and_place != NUMBER_OF_COLORS || G7C1 != GXC1 || G7C2 != GXC2 || G7C3 != GXC3 || G7C4 != GXC4
G8_Correct_color_and_place != NUMBER_OF_COLORS || G8C1 != GXC1 || G8C2 != GXC2 || G8C3 != GXC3 || G8C4 != GXC4
G9_Correct_color_and_place != NUMBER_OF_COLORS || G9C1 != GXC1 || G9C2 != GXC2 || G9C3 != GXC3 || G9C4 != GXC4
G10_Correct_color_and_place != NUMBER_OF_COLORS || G10C1 != GXC1 || G10C2 != GXC2 || G10C3 != GXC3 || G10C4 != GXC4


// Correct color and wrong place must match the new guess
G1_Correct_color_and_wrong_place = ((G1C1 = GXC2 || G1C1 = GXC3 || G1C1 = GXC4) && G1C1 != GXC1) + ((G1C2 = GXC1 || G1C2 = GXC3 || G1C2 = GXC4) && G1C2 != GXC2) + ((G1C3 = GXC1 || G1C3 = GXC2 || G1C3 = GXC4) && G1C3 != GXC3) + ((G1C4 = GXC1 || G1C4 = GXC2 || G1C4 = GXC3) && G1C4 != GXC4)
G2_Correct_color_and_wrong_place = ((G2C1 = GXC2 || G2C1 = GXC3 || G2C1 = GXC4) && G2C1 != GXC1) + ((G2C2 = GXC1 || G2C2 = GXC3 || G2C2 = GXC4) && G2C2 != GXC2) + ((G2C3 = GXC1 || G2C3 = GXC2 || G2C3 = GXC4) && G2C3 != GXC3) + ((G2C4 = GXC1 || G2C4 = GXC2 || G2C4 = GXC3) && G2C4 != GXC4)
G3_Correct_color_and_wrong_place = ((G3C1 = GXC2 || G3C1 = GXC3 || G3C1 = GXC4) && G3C1 != GXC1) + ((G3C2 = GXC1 || G3C2 = GXC3 || G3C2 = GXC4) && G3C2 != GXC2) + ((G3C3 = GXC1 || G3C3 = GXC2 || G3C3 = GXC4) && G3C3 != GXC3) + ((G3C4 = GXC1 || G3C4 = GXC2 || G3C4 = GXC3) && G3C4 != GXC4)
G4_Correct_color_and_wrong_place = ((G4C1 = GXC2 || G4C1 = GXC3 || G4C1 = GXC4) && G4C1 != GXC1) + ((G4C2 = GXC1 || G4C2 = GXC3 || G4C2 = GXC4) && G4C2 != GXC2) + ((G4C3 = GXC1 || G4C3 = GXC2 || G4C3 = GXC4) && G4C3 != GXC3) + ((G4C4 = GXC1 || G4C4 = GXC2 || G4C4 = GXC3) && G4C4 != GXC4)
G5_Correct_color_and_wrong_place = ((G5C1 = GXC2 || G5C1 = GXC3 || G5C1 = GXC4) && G5C1 != GXC1) + ((G5C2 = GXC1 || G5C2 = GXC3 || G5C2 = GXC4) && G5C2 != GXC2) + ((G5C3 = GXC1 || G5C3 = GXC2 || G5C3 = GXC4) && G5C3 != GXC3) + ((G5C4 = GXC1 || G5C4 = GXC2 || G5C4 = GXC3) && G5C4 != GXC4)
G6_Correct_color_and_wrong_place = ((G6C1 = GXC2 || G6C1 = GXC3 || G6C1 = GXC4) && G6C1 != GXC1) + ((G6C2 = GXC1 || G6C2 = GXC3 || G6C2 = GXC4) && G6C2 != GXC2) + ((G6C3 = GXC1 || G6C3 = GXC2 || G6C3 = GXC4) && G6C3 != GXC3) + ((G6C4 = GXC1 || G6C4 = GXC2 || G6C4 = GXC3) && G6C4 != GXC4)
G7_Correct_color_and_wrong_place = ((G7C1 = GXC2 || G7C1 = GXC3 || G7C1 = GXC4) && G7C1 != GXC1) + ((G7C2 = GXC1 || G7C2 = GXC3 || G7C2 = GXC4) && G7C2 != GXC2) + ((G7C3 = GXC1 || G7C3 = GXC2 || G7C3 = GXC4) && G7C3 != GXC3) + ((G7C4 = GXC1 || G7C4 = GXC2 || G7C4 = GXC3) && G7C4 != GXC4)
G8_Correct_color_and_wrong_place = ((G8C1 = GXC2 || G8C1 = GXC3 || G8C1 = GXC4) && G8C1 != GXC1) + ((G8C2 = GXC1 || G8C2 = GXC3 || G8C2 = GXC4) && G8C2 != GXC2) + ((G8C3 = GXC1 || G8C3 = GXC2 || G8C3 = GXC4) && G8C3 != GXC3) + ((G8C4 = GXC1 || G8C4 = GXC2 || G8C4 = GXC3) && G8C4 != GXC4)
G9_Correct_color_and_wrong_place = ((G9C1 = GXC2 || G9C1 = GXC3 || G9C1 = GXC4) && G9C1 != GXC1) + ((G9C2 = GXC1 || G9C2 = GXC3 || G9C2 = GXC4) && G9C2 != GXC2) + ((G9C3 = GXC1 || G9C3 = GXC2 || G9C3 = GXC4) && G9C3 != GXC3) + ((G9C4 = GXC1 || G9C4 = GXC2 || G9C4 = GXC3) && G9C4 != GXC4)
G10_Correct_color_and_wrong_place = ((G10C1 = GXC2 || G10C1 = GXC3 || G10C1 = GXC4) && G10C1 != GXC1) + ((G10C2 = GXC1 || G10C2 = GXC3 || G10C2 = GXC4) && G10C2 != GXC2) + ((G10C3 = GXC1 || G10C3 = GXC2 || G10C3 = GXC4) && G10C3 != GXC3) + ((G10C4 = GXC1 || G10C4 = GXC2 || G10C4 = GXC3) && G10C4 != GXC4)


// No duplicates
GXC1 != GXC2
GXC1 != GXC3
GXC1 != GXC4
GXC2 != GXC3
GXC2 != GXC4
GXC3 != GXC4

OUTPUT_EXACTLY_ONE_SOLUTION:
Secret: 4 3 6 5

1 2 3 4  O X
${G1C1} ${G1C2} ${G1C3} ${G1C4}  ${G1_Correct_color_and_place} ${G1_Correct_color_and_wrong_place}
${G2C1} ${G2C2} ${G2C3} ${G2C4}  ${G2_Correct_color_and_place} ${G2_Correct_color_and_wrong_place}
${G3C1} ${G3C2} ${G3C3} ${G3C4}  ${G3_Correct_color_and_place} ${G3_Correct_color_and_wrong_place}
${G4C1} ${G4C2} ${G4C3} ${G4C4}  ${G4_Correct_color_and_place} ${G4_Correct_color_and_wrong_place}
${G5C1} ${G5C2} ${G5C3} ${G5C4}  ${G5_Correct_color_and_place} ${G5_Correct_color_and_wrong_place}
${G6C1} ${G6C2} ${G6C3} ${G6C4}  ${G6_Correct_color_and_place} ${G6_Correct_color_and_wrong_place}
${G7C1} ${G7C2} ${G7C3} ${G7C4}  ${G7_Correct_color_and_place} ${G7_Correct_color_and_wrong_place}
${G8C1} ${G8C2} ${G8C3} ${G8C4}  ${G8_Correct_color_and_place} ${G8_Correct_color_and_wrong_place}
${G9C1} ${G9C2} ${G9C3} ${G9C4}  ${G9_Correct_color_and_place} ${G9_Correct_color_and_wrong_place}
${G10C1} ${G10C2} ${G10C3} ${G10C4}  ${G10_Correct_color_and_place} ${G10_Correct_color_and_wrong_place}

The secret must be: ${GXC1} ${GXC2} ${GXC3} ${GXC4}

OUTPUT_HEADER:
Secret: 4 3 6 5

1 2 3 4  O X
${G1C1} ${G1C2} ${G1C3} ${G1C4}  ${G1_Correct_color_and_place} ${G1_Correct_color_and_wrong_place}
${G2C1} ${G2C2} ${G2C3} ${G2C4}  ${G2_Correct_color_and_place} ${G2_Correct_color_and_wrong_place}
${G3C1} ${G3C2} ${G3C3} ${G3C4}  ${G3_Correct_color_and_place} ${G3_Correct_color_and_wrong_place}
${G4C1} ${G4C2} ${G4C3} ${G4C4}  ${G4_Correct_color_and_place} ${G4_Correct_color_and_wrong_place}
${G5C1} ${G5C2} ${G5C3} ${G5C4}  ${G5_Correct_color_and_place} ${G5_Correct_color_and_wrong_place}
${G6C1} ${G6C2} ${G6C3} ${G6C4}  ${G6_Correct_color_and_place} ${G6_Correct_color_and_wrong_place}
${G7C1} ${G7C2} ${G7C3} ${G7C4}  ${G7_Correct_color_and_place} ${G7_Correct_color_and_wrong_place}
${G8C1} ${G8C2} ${G8C3} ${G8C4}  ${G8_Correct_color_and_place} ${G8_Correct_color_and_wrong_place}
${G9C1} ${G9C2} ${G9C3} ${G9C4}  ${G9_Correct_color_and_place} ${G9_Correct_color_and_wrong_place}
${G10C1} ${G10C2} ${G10C3} ${G10C4}  ${G10_Correct_color_and_place} ${G10_Correct_color_and_wrong_place}

Possible secrets: ${NUMBER_OF_SOLUTIONS}
OUTPUT:
${GXC1} ${GXC2} ${GXC3} ${GXC4}